SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paEjecutarCierreDeReestructura]

@reestructura INT,
@op INT,
@accion INT,
@id INT

AS
SET NOCOUNT ON
DECLARE @Estado INT

SELECT @Estado = (SELECT Estado FROM tb_Reestructuras WHERE IdReestructura = @reestructura)

-- Si no esta aprobada o vigente o cerrada...
IF @Estado NOT IN(15, 16, 18) BEGIN
	-- OP = 1 Es Plazas
	IF @op = 1 BEGIN

		-- ACCION = 1 Es Alta
		-- CHEQUEO SI YA EXISTE LA PLAZA A CERRAR

		IF NOT EXISTS(SELECT top 1 * FROM tb_CierresDeReestructura WHERE Reestructura = @reestructura AND PlazaACerrar = @id) BEGIN

			IF @accion = 1 BEGIN
				INSERT INTO tb_CierresDeReestructura(Reestructura, PlazaACerrar, Estado) VALUES(@reestructura, @id, 12)
			END

		END	

		--ACCION = 2 Es Baja
		IF @accion = 2 BEGIN
			DELETE tb_CierresDeReestructura WHERE IdCierreReestructura = @id
		END
	END
	-- OP = 2 Es Divisiones
	IF @op = 2 BEGIN
	
		-- ACCION = 1 Es Alta
		-- CHEQUEO SI YA EXISTE LA DIVISION A CERRAR

		IF NOT EXISTS(SELECT top 1 * FROM tb_DivisionesACerrar WHERE Reestructura = @reestructura AND DivisionACerrar = @id) BEGIN

			-- DEBO AGREGAR LAS PLAZAS RELACIONADAS QUE NO ESTEN YA CARGADAS
			IF @accion = 1 BEGIN
				INSERT INTO tb_DivisionesACerrar(Reestructura, DivisionACerrar, Estado) VALUES(@reestructura, @id, 12)
				INSERT INTO tb_CierresDeReestructura(Reestructura, PlazaACerrar, Estado) 
					SELECT @reestructura, P.IdPlaza, 12 FROM tb_Plazas P WHERE Division = @id
					AND NOT EXISTS(SELECT top 1 * FROM tb_CierresDeReestructura WHERE Reestructura = @reestructura AND PlazaACerrar = P.IdPlaza)
			END

		END

		--ACCION = 2 Es Baja
		-- DEBO BORRAR LAS PLAZAS RELACIONADAS
		IF @accion = 2 BEGIN
			DECLARE @DivisionACerrar INT
			SELECT @DivisionACerrar = (SELECT DivisionACerrar FROM tb_DivisionesACerrar WHERE IdDivision = @id)
			DELETE tb_DivisionesACerrar WHERE IdDivision = @id
			DELETE tb_CierresDeReestructura WHERE PlazaACerrar IN(SELECT IdPlaza FROM tb_Plazas WHERE Division = @DivisionACerrar)
		END
	END
END
GO
GRANT EXECUTE ON  [dbo].[paEjecutarCierreDeReestructura] TO [Reestructura]
GO
